/*
 * @Author: zh
 * @Date: 2024-12-06 14:00:28
 * @LastEditors: zh
 * @LastEditTime: 2024-12-10 13:20:45
 * @Description: 
 */
import react from '@vitejs/plugin-react-swc'
import { type PluginOption } from 'vite'

import { createAppConfigPlugin } from './appConfig'
// import purgeIcons from "vite-plugin-purge-icons"
import { configCompressPlugin } from './compress'
import { configHtmlPlugin } from './html'
import { configMockPlugin } from './mock'
import { configSvgIconsPlugin } from './svgSprite'
// import { configVisualizerConfig } from './visualizer';
interface Options {
    isBuild: boolean;
    root: string;
    compress: string;
    enableMock?: boolean;
    enableAnalyze?: boolean;
}

async function createPlugins({ isBuild, root, enableMock, compress, enableAnalyze }: Options) {
    console.log(isBuild, root, enableMock, compress, enableAnalyze, "vite插件");
    const vitePlugins: (PluginOption | PluginOption[])[] = [react()]

    const appConfigPlugin = await createAppConfigPlugin({ root, isBuild })
    vitePlugins.push(appConfigPlugin)

    // vite-plugin-html
    vitePlugins.push(configHtmlPlugin({ isBuild }))
    // vite-plugin-svg-icons
    vitePlugins.push(configSvgIconsPlugin({ isBuild }))

    //   // vite-plugin-purge-icons
    //   vitePlugins.push(purgeIcons());

    // The following plugins only work in the production environment
    if (isBuild) {
        // rollup-plugin-gzip
        vitePlugins.push(
            configCompressPlugin({
                compress,
            }),
        );
    }


    //   // rollup-plugin-visualizer
    //   if (enableAnalyze) {
    //     vitePlugins.push(configVisualizerConfig());
    //   }

    // vite-plugin-mock
    if (enableMock) {
        vitePlugins.push(configMockPlugin({ isBuild }));
    }

    return vitePlugins;

}

export { createPlugins };


